// 升级版直接用一个名字  加上点语法运用  const 常量
const utils = new Object();

// 1. 生成 min ~ max 的随机数
utils.randomInt = function(min = 0, max = 1) {
  // 函数内部返回随机颜色
  return Math.floor(Math.random() * (max - min + 1) + min);
};

// 2. rgb 随机颜色封装
utils.randomRGB = function() {
  // 分别调用随机数三次，生成三个不同的随机数
  const r = utils.randomInt(0, 255);
  const g = utils.randomInt(0, 255);
  const b = utils.randomInt(0, 255);
  // 拼接成 rgb(xx,xx,xx) 颜色格式
  return "rgb(" + r + "," + g + "," + b + ")"; // 字符串拼接易错点，要小心
};

// 3. 16 进制随机颜色
utils.randomHexColor = function() {
  // 颜色数组
  const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "A", "B", "C", "D", "E", "F"];
  // 颜色初始值，十六进制颜色前有 # 符号
  let hexColor = "#";
  // 循环六次
  for (let i = 0; i < 6; i++) {
    // 随机生成随机数作为数组索引，从 arr 数组中随机获取一个，累加到 hexColor 变量中
    hexColor += arr[utils.randomInt(0, 15)];
  }
  // 循环结束后内部返回
  return hexColor;
};

// 4. 日期格式化封装
utils.formatDate = function(split = "-") {
  // split 默认分隔符
  // 获取当前系统日期和时间
  const myDate = new Date();
  // 获取年份
  const yyyy = myDate.getFullYear();
  // 获取月份，zero 小于 10 补0
  const mm = utils.zero(myDate.getMonth() + 1);
  // 获取日期，zero 小于 10 补0
  const dd = utils.zero(myDate.getDate());
  // 返回格式化后日期 yyyy-mm-dd
  return yyyy + split + mm + split + dd;
};

// 5. 时间格式化封装   单个导出
module.exports.formatTime = utils.formatTime = function(split = ":") {
  // split 默认分隔符
  // 获取当前系统日期和时间
  const myDate = new Date();
  // 获取小时，zero 小于 10 补0
  const hh = utils.zero(myDate.getHours());
  // 获取分钟，zero 小于 10 补0
  const mm = utils.zero(myDate.getMinutes());
  // 获取秒，zero 小于 10 补0
  const ss = utils.zero(myDate.getSeconds());
  // 返回格式化后时间 hh:mm:ss
  return hh + split + mm + split + ss;
};

// 6. 小于 10 补 0
// !!! 通过点语法的引用关系导出一个
module.exports.zero = utils.zero = function(number) {
  // 三元表达式结构： 条件 ? true 执行1 : false 执行2;
  // 三元表达式运行过程，number 小于 10 吗? 如果 true 结果为 '0' + number : 如果 false 结果为 number;
  return number < 10 ? "0" + number : number;
};

// 默认导出一个空对象
// module.exports = {};

// 把 utils 保存的内存地址导出，把整个 utils 对象导出
// module.exports = utils;


